home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / include / linux / neighbour.h < prev    next >
C/C++ Source or Header  |  2008-10-24  |  4KB  |  160 lines

  1. #ifndef __LINUX_NEIGHBOUR_H
  2. #define __LINUX_NEIGHBOUR_H
  3.  
  4. #include <linux/netlink.h>
  5.  
  6. struct ndmsg
  7. {
  8.     __u8        ndm_family;
  9.     __u8        ndm_pad1;
  10.     __u16        ndm_pad2;
  11.     __s32        ndm_ifindex;
  12.     __u16        ndm_state;
  13.     __u8        ndm_flags;
  14.     __u8        ndm_type;
  15. };
  16.  
  17. enum
  18. {
  19.     NDA_UNSPEC,
  20.     NDA_DST,
  21.     NDA_LLADDR,
  22.     NDA_CACHEINFO,
  23.     NDA_PROBES,
  24.     __NDA_MAX
  25. };
  26.  
  27. #define NDA_MAX (__NDA_MAX - 1)
  28.  
  29. /*
  30.  *    Neighbor Cache Entry Flags
  31.  */
  32.  
  33. #define NTF_PROXY    0x08    /* == ATF_PUBL */
  34. #define NTF_ROUTER    0x80
  35.  
  36. /*
  37.  *    Neighbor Cache Entry States.
  38.  */
  39.  
  40. #define NUD_INCOMPLETE    0x01
  41. #define NUD_REACHABLE    0x02
  42. #define NUD_STALE    0x04
  43. #define NUD_DELAY    0x08
  44. #define NUD_PROBE    0x10
  45. #define NUD_FAILED    0x20
  46.  
  47. /* Dummy states */
  48. #define NUD_NOARP    0x40
  49. #define NUD_PERMANENT    0x80
  50. #define NUD_NONE    0x00
  51.  
  52. /* NUD_NOARP & NUD_PERMANENT are pseudostates, they never change
  53.    and make no address resolution or NUD.
  54.    NUD_PERMANENT is also cannot be deleted by garbage collectors.
  55.  */
  56.  
  57. struct nda_cacheinfo
  58. {
  59.     __u32        ndm_confirmed;
  60.     __u32        ndm_used;
  61.     __u32        ndm_updated;
  62.     __u32        ndm_refcnt;
  63. };
  64.  
  65. /*****************************************************************
  66.  *        Neighbour tables specific messages.
  67.  *
  68.  * To retrieve the neighbour tables send RTM_GETNEIGHTBL with the
  69.  * NLM_F_DUMP flag set. Every neighbour table configuration is
  70.  * spread over multiple messages to avoid running into message
  71.  * size limits on systems with many interfaces. The first message
  72.  * in the sequence transports all not device specific data such as
  73.  * statistics, configuration, and the default parameter set.
  74.  * This message is followed by 0..n messages carrying device
  75.  * specific parameter sets.
  76.  * Although the ordering should be sufficient, NDTA_NAME can be
  77.  * used to identify sequences. The initial message can be identified
  78.  * by checking for NDTA_CONFIG. The device specific messages do
  79.  * not contain this TLV but have NDTPA_IFINDEX set to the
  80.  * corresponding interface index.
  81.  *
  82.  * To change neighbour table attributes, send RTM_SETNEIGHTBL
  83.  * with NDTA_NAME set. Changeable attribute include NDTA_THRESH[1-3],
  84.  * NDTA_GC_INTERVAL, and all TLVs in NDTA_PARMS unless marked
  85.  * otherwise. Device specific parameter sets can be changed by
  86.  * setting NDTPA_IFINDEX to the interface index of the corresponding
  87.  * device.
  88.  ****/
  89.  
  90. struct ndt_stats
  91. {
  92.     __u64        ndts_allocs;
  93.     __u64        ndts_destroys;
  94.     __u64        ndts_hash_grows;
  95.     __u64        ndts_res_failed;
  96.     __u64        ndts_lookups;
  97.     __u64        ndts_hits;
  98.     __u64        ndts_rcv_probes_mcast;
  99.     __u64        ndts_rcv_probes_ucast;
  100.     __u64        ndts_periodic_gc_runs;
  101.     __u64        ndts_forced_gc_runs;
  102. };
  103.  
  104. enum {
  105.     NDTPA_UNSPEC,
  106.     NDTPA_IFINDEX,            /* u32, unchangeable */
  107.     NDTPA_REFCNT,            /* u32, read-only */
  108.     NDTPA_REACHABLE_TIME,        /* u64, read-only, msecs */
  109.     NDTPA_BASE_REACHABLE_TIME,    /* u64, msecs */
  110.     NDTPA_RETRANS_TIME,        /* u64, msecs */
  111.     NDTPA_GC_STALETIME,        /* u64, msecs */
  112.     NDTPA_DELAY_PROBE_TIME,        /* u64, msecs */
  113.     NDTPA_QUEUE_LEN,        /* u32 */
  114.     NDTPA_APP_PROBES,        /* u32 */
  115.     NDTPA_UCAST_PROBES,        /* u32 */
  116.     NDTPA_MCAST_PROBES,        /* u32 */
  117.     NDTPA_ANYCAST_DELAY,        /* u64, msecs */
  118.     NDTPA_PROXY_DELAY,        /* u64, msecs */
  119.     NDTPA_PROXY_QLEN,        /* u32 */
  120.     NDTPA_LOCKTIME,            /* u64, msecs */
  121.     __NDTPA_MAX
  122. };
  123. #define NDTPA_MAX (__NDTPA_MAX - 1)
  124.  
  125. struct ndtmsg
  126. {
  127.     __u8        ndtm_family;
  128.     __u8        ndtm_pad1;
  129.     __u16        ndtm_pad2;
  130. };
  131.  
  132. struct ndt_config
  133. {
  134.     __u16        ndtc_key_len;
  135.     __u16        ndtc_entry_size;
  136.     __u32        ndtc_entries;
  137.     __u32        ndtc_last_flush;    /* delta to now in msecs */
  138.     __u32        ndtc_last_rand;        /* delta to now in msecs */
  139.     __u32        ndtc_hash_rnd;
  140.     __u32        ndtc_hash_mask;
  141.     __u32        ndtc_hash_chain_gc;
  142.     __u32        ndtc_proxy_qlen;
  143. };
  144.  
  145. enum {
  146.     NDTA_UNSPEC,
  147.     NDTA_NAME,            /* char *, unchangeable */
  148.     NDTA_THRESH1,            /* u32 */
  149.     NDTA_THRESH2,            /* u32 */
  150.     NDTA_THRESH3,            /* u32 */
  151.     NDTA_CONFIG,            /* struct ndt_config, read-only */
  152.     NDTA_PARMS,            /* nested TLV NDTPA_* */
  153.     NDTA_STATS,            /* struct ndt_stats, read-only */
  154.     NDTA_GC_INTERVAL,        /* u64, msecs */
  155.     __NDTA_MAX
  156. };
  157. #define NDTA_MAX (__NDTA_MAX - 1)
  158.  
  159. #endif
  160.